iT邦幫忙

2022 iThome 鐵人賽

DAY 3
0
自我挑戰組

多人連線遊戲背後的原理與實作系列 第 11

Day 11 - 製作連線遊戲時會遇到的問題(延遲補償篇)

  • 分享至 

  • xImage
  •  

在上一篇文章中,我們有提到實體插值的作法下,玩家在本地端電腦看到的其他玩家是過去的遊戲資訊,假設今天是發生在快節奏的遊戲中像是射擊遊戲的話,玩家瞄準的對象永遠都是其他玩家過去的位置,那理所當然玩家就永遠射不到移動中的對象,在延遲更差的環境下問題越是明顯,而這個問題我們就可以透過延遲補償來解決。

延遲補償(Lag Compensation),它的原理是紀錄玩家射擊時,重新模擬當下遊戲世界你的擊中對象,這樣子玩家就不用擔心自己永遠都在瞄準過去位置的玩家了。但這個方法會導致一個問題,若今天敵方玩家躲到了障礙物後面,但因為本地端的敵方玩家是還沒躲到障礙物後的,此時敵方玩家可能會再躲到障礙物仍被擊殺,此時對敵方玩家就會有點不公平了,但延遲補償帶來的整體效益仍然是優大於劣。

那延遲補償的做法是從客戶端得到玩家的輸入並附帶時間戳,服務器把時間戳及封包傳輸時間都納入計算後,重新模擬當下的遊戲世界,並把最後的計算結果傳送給所有客戶。


上一篇
Day 10 - 製作連線遊戲時會遇到的問題(實體插值與航位推算篇)
下一篇
Day12 - 遊戲服務器同步(幀同步)
系列文
多人連線遊戲背後的原理與實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言